﻿using DAL.Entity;
using DAL.Persistencia;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using NewTierra.App_Code;

namespace NewTierra.Pages.Financeiro
{
    public partial class ContasReceber : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            base.PageLoad();

            if (base.ObterPerfilLogado() == (int)PerfilUsuario.Operacional)
                Response.Redirect("/Pages/Index.aspx");

            if (!IsPostBack)
            {
                PopularDrops();
                
            }
        }


        public void PopularDrops()
        {
            PopularMoedaPagarFatura();
            PopularMoedaDeposito();

        }



        protected void VoltarMenu(object sender, EventArgs e)
        {
            Response.Redirect("~/Pages/Index.aspx");
        }



        protected void PopularMoedaPagarFatura()
        {
            try
            {
                MoedaDAL moedaDAL = new MoedaDAL();
                cmbMoedaPagarFatura.DataSource = moedaDAL.ListarTodos();
                cmbMoedaPagarFatura.DataTextField = "Moeda_sigla";
                cmbMoedaPagarFatura.DataValueField = "Moeda_id";
                cmbMoedaPagarFatura.DataBind();
                cmbMoedaPagarFatura.Items.Insert(0, new ListItem("Selecione...", "0"));
                
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }


        }


        protected void PopularMoedaDeposito()
        {
            try
            {
                MoedaDAL moedaDAL = new MoedaDAL();
                cmbMoedaDeposito.DataSource = moedaDAL.ListarTodos();
                cmbMoedaDeposito.DataTextField = "Moeda_sigla";
                cmbMoedaDeposito.DataValueField = "Moeda_id";
                cmbMoedaDeposito.DataBind();
                cmbMoedaDeposito.Items.Insert(0, new ListItem("Selecione...", "0"));

            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }


        }


        #region WebMethods


        [WebMethod]
        public static List<string> SearchClientes(string prefixText, int count)
        {
            try
            {
                //SupplierDAL s = new SupplierDAL();
                ClienteDAL cDAL = new ClienteDAL();

                List<DAL.Entity.Cliente> clientes;



                //List<Cliente> cliente;

                //List<Supplier> supp;

                if (prefixText.Equals("*"))
                {
                    clientes = cDAL.ListarTodos().OrderBy(a => a.Cliente_nome).ToList();
                }
                else
                {
                    clientes = cDAL.ListarTodos().Where(a => a.Cliente_nome.Contains(prefixText)).ToList();
                }

                List<string> lista = new List<string>();

                if (clientes.Count == 0)
                {
                    lista.Add("Não existe supplier cadastrado com esse nome.");

                    return lista;
                }

                foreach (DAL.Entity.Cliente c in clientes)
                {
                    lista.Add(c.Cliente_nome);
                }

                return lista;
            }
            catch
            {
                throw;
            }
        }


        [WebMethod]
        public static List<string> SearchConta(string prefixText, int count)
        {
            try
            {
                F_ContaDAL fcDAL = new F_ContaDAL();
                List<F_Conta> supp;

                if (prefixText.Equals("*"))
                {
                    supp = fcDAL.ListarTodos();
                }
                else
                {
                    supp = fcDAL.pesquisarPorNumeroContaFiltro(prefixText);
                }

                List<string> lista = new List<string>();

                if (supp.Count == 0)
                {
                    lista.Add("Não existe supplier cadastrado com esse nome.");

                    return lista;
                }

                foreach (F_Conta fa in supp)
                {
                    lista.Add(fa.Numero);
                }

                return lista;
            }
            catch
            {
                throw;
            }
        }

        #endregion


        protected void btnFiltroNomeCliente_Click(object sender, EventArgs e)
        {

            try
            {
                ClienteDAL cDAL = new ClienteDAL();
                DAL.Entity.Cliente cliente = cDAL.ObterPorNome(txtCliente.Text.Trim());
                //Session["idClienteContasPagar"] = cliente.Cliente_id;
                GridInvoices gridInvoices = new GridInvoices();
                List<GridInvoices> listaGridInvoices = new List<GridInvoices>();
                
                string[] pars = ConfigurationManager.ConnectionStrings["NewTierraEntities"].ToString().Split('\"');
                SqlConnection Con = new SqlConnection(pars[1]);

                Con.Open();

                string sql;

                sql = " ";
                sql = sql + "SELECT q.Quotation_Code, qg.Pax_Group_Name, i.Invoice_id, i.Grand_Total ";

                sql = sql + "FROM Invoice i ";
                sql = sql + "INNER JOIN Quotation_Grupo qg ON qg.Quotation_Grupo_Id = i.Quotation_Grupo_Id ";
                sql = sql + "INNER JOIN Cliente c ON c.Cliente_id = qg.Cliente_id ";
                sql = sql + "INNER JOIN Quotation q ON q.Quotation_Id = qg.Quotation_Id ";
                sql = sql + "WHERE qg.Cliente_id = " + cliente.Cliente_id;

                SqlCommand cmd = new SqlCommand(sql, Con);
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    gridInvoices = new GridInvoices();
                    gridInvoices.NumeroFile = reader["Quotation_Code"].ToString();
                    gridInvoices.NomePassageiro = reader["Pax_Group_Name"].ToString();
                    gridInvoices.NumeroInvoice = reader["Invoice_id"].ToString();
                    gridInvoices.TotalInvoice = Convert.ToDouble(reader["Grand_Total"]);

                    listaGridInvoices.Add(gridInvoices);
                }


                gridInvoicesContasReceber.DataSource = listaGridInvoices;
                gridInvoicesContasReceber.DataBind();




                //txtInvoice.Enabled = true;
                //txtInvoice.Focus();
                //txtSupplier.Enabled = false;

            }
            catch (Exception ex)
            {
                //MostrarMsg(ex.Message);

            }

        }




        public class GridInvoices
        {

            private string vencimento;
            public string Vencimento
            {
                get { return vencimento; }
                set { vencimento = value; }
            }

            private string numeroFile;
            public string NumeroFile
            {
                get { return numeroFile; }
                set { numeroFile = value; }
            }

            private string nomePassageiro;
            public string NomePassageiro
            {
                get { return nomePassageiro; }
                set { nomePassageiro = value; }
            }

            private string numeroInvoice;
            public string NumeroInvoice
            {
                get { return numeroInvoice; }
                set { numeroInvoice = value; }
            }

            private double totalInvoice;
            public double TotalInvoice
            {
                get { return totalInvoice; }
                set { totalInvoice = value; }
            }

            private double saldoPagar;
            public double SaldoPagar
            {
                get { return saldoPagar; }
                set { saldoPagar = value; }
            }

        }

        protected void chkGridPagarInvoiceContasReceber_CheckedChanged(object sender, EventArgs e)
        {

        }

        protected void btnPagarInvoice_Click(object sender, EventArgs e)
        {

        }        

        protected void txtContaPagarFatura_TextChanged(object sender, EventArgs e)
        {

        }

        protected void btnFiltroConta_Click(object sender, EventArgs e)
        {

        }

        protected void btnReceberDeposito_Click(object sender, EventArgs e)
        {
            try
            {

                if (!txtValorDeposito.Text.Equals("") && !txtDataDeposito.Text.Equals("") && !txtCambioDeposito.Text.Equals(""))
                {
                    DepositoDAL dDAL = new DepositoDAL();
                    Deposito d = new Deposito();

                    d.valor = Convert.ToDecimal(txtValorDeposito.Text);
                    d.cambio = Convert.ToDecimal(txtCambioDeposito.Text);
                    d.data = Convert.ToDateTime(txtDataDeposito.Text);
                    d.moeda_id = Convert.ToInt32(cmbMoedaDeposito.SelectedValue);
                    dDAL.inserir(d);

                    MostrarMsg("Deposito incluido com sucesso");

                }

            }
            catch (Exception)
            {

                throw;
            }
        }


        protected void MostrarMsg(string Msg)
        {
            ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "call me", "showAutoCloseMessage('" + Msg + "')", true);
        }

    }
}